<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>昨天作业</title>
    <style>
        body {
            height: 4000px;
        }
    </style>
</head>

<body>
    <script>
        //1.给数组添加一个rmDup方法，该方法能够删除数组里面的重复选项。如 [1,1,2,2,3].rmDup()返回[1,2,3] 
        Array.prototype.rmDup = function () {
            const set = new Set(this)
            //把set对象转换成数组
            // return [...set] 
            return Array.from(set)
        }
        Array.prototype.rmDup1 = function () {
            let res = []
            //通过forEach遍历数组的每一个元素
            this.forEach(function (item) {
                //判断数组的元素是否在res数组里面，如果不在就把他放到res里面
                if (!res.includes(item)) {
                    res.push(item)
                }
            })
            return res
        }
        //2.定义一个函数combineObj能够合并多个对象，参数个数不限，如combineObj({x:1},{y:2},{z:3})返回{x:1,y:2,z:3}
        function combineObj() {
            let res = {}
            //    console.log(arguments)
            for (let i in arguments) {
                let obj = arguments[i]
                res = { ...res, ...obj }
            }
            return res
        }
        function combineObj1() {
            let res = {}
            Object.assign(res, ...arguments)
            return res
        }
        function combineObj2() {
            return Object.assign({}, ...arguments)
        }
        //1.知道用途 2.知道用法 3.知道原理
        /*
        3.给网页页面设置一个比较高的高度，让网站能过滚动起来。监听滚动，打印对应内容。
        由于函数执行频率太高，需要通过节流函数降低函数响应频率。请通过节流函数实现回调函数0.2s才执行一次
        */
        onscroll = function (e) {
            console.log(e)
        }
        onscroll = throttle(function (e) {
            console.log(e)
        },100)
        //节流函数
        function throttle(func, delay) {
            var prev = Date.now();
            return function () {
                var context = this;   //this指向window
                var args = arguments;
                var now = Date.now();
                if (now - prev >= delay) {
                    func.apply(context, args);
                    prev = Date.now();
                }
            }
        }
    </script>
</body>

</html>